package com.excesys.exsecs.access.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;

/**
 * 设备产品表
 *
 * @author lxc
 * @date 2024-05-06 17:44:19
 */
@Data
@TableName("access_product")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "设备产品表")
public class AccessProduct extends Model<AccessProduct> {


	/**
	* 主键id
	*/
    @TableId(type = IdType.AUTO)
    @Schema(description="主键id")
    private Long id;

	/**
	* 品类标识
	*/
    @Schema(description="品类标识")
    private String category;

	/**
	 * 品类标识名称
	 */
	@Schema(description="品类标识名称")
	@TableField(exist = false)
	private String categoryName;

	/**
	* 产品key
	*/
    @Schema(description="产品key")
    private String productKey;

	/**
	* 产品名称
	*/
	@NotBlank(message = "产品名称不能为空")
    @Schema(description="产品名称")
    private String name;

	/**
	* 节点类型(字典)：0-网关设备、1-网关子设备、2-直连设备
	*/
    @Schema(description="节点类型(字典)：0-网关设备、1-网关子设备、2-直连设备")
    private String nodeType;

	/**
	* 接入方式(字典)：默认:mqtt
	*/
    @Schema(description="接入方式(字典)：默认:mqtt")
    private String accessWay;

	/**
	* 是否发布，定义为枚举：0-不发布、1-发布
	*/
    @Schema(description="是否发布，定义为枚举：0-不发布、1-发布")
    private String isPublish;

	/**
	 * 流程id
	 */
	@Schema(description="流程id")
	private String flowId;

	/**
	 * 供应商编码
	 */
	@Schema(description="供应商编码")
	private String supplierCode;

	/**
	 * 供应商名称
	 */
	@Schema(description="供应商名称")
	@TableField(exist = false)
	private String supplierName;

	/**
	* 图片
	*/
    @Schema(description="图片")
    private String img;

	/**
	* 创建人
	*/
	@TableField(fill = FieldFill.INSERT)
    @Schema(description="创建人")
    private String createBy;

	/**
	* 创建时间
	*/
	@TableField(fill = FieldFill.INSERT)
    @Schema(description="创建时间")
    private LocalDateTime createTime;

	/**
	* 更新人
	*/
	@TableField(fill = FieldFill.INSERT_UPDATE)
    @Schema(description="更新人")
    private String updateBy;

	/**
	* 更新时间
	*/
	@TableField(fill = FieldFill.INSERT_UPDATE)
    @Schema(description="更新时间")
    private LocalDateTime updateTime;
}